#ifndef _FILEUTIL_H
#define _FILEUTIL_H

#include <bits/types/FILE.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>

namespace droneswarm
{
    //这个类用来封装打开文件、写数据、关闭文件。
    class AppendFile
    {
    public:
        explicit AppendFile( std::string filename );
        ~AppendFile();
        //通过append函数将日志写入文件
        void append( const char *logline, const size_t len );
        // flush函数将缓冲区的内容写入文件
        void flush();

    private:
        size_t wirte( const char *logline, size_t len );
        //文件描述符
        FILE *fp_;
        //输出缓冲区
        char buffer_[ 64 * 1024 ];

    private:
        AppendFile( const AppendFile & ) = delete;
        AppendFile( const AppendFile && ) = delete;
        AppendFile &operator=( const AppendFile & ) = delete;
    };
}  // namespace droneswarm

#endif